class Solution {
public:
    int GetUglyNumber_Solution(int index) {
        if(index<=0)
            return 0;
        if(index<7)//为节约时间  小于7直接特判输出了
            return index;
        int result[index];
        int p2=0,p3=0,p5=0;//2 3 5的基础指针值
        result[0]=1;//置初始丑数值
        for(int i=1;i<index;i++){//丑数只能由丑数相乘得出
            result[i]=min(result[p2]*2,min(result[p3]*3,result[p5]*5));//拿出最小的丑数
            if(result[i]==result[p2]*2)//此处判断不可加if  为了去重
                p2++;                  //例如2^5=10 5*2也等于10 如果不去重10会存入数组两次
            if(result[i]==result[p3]*3)
                p3++;
            if(result[i]==result[p5]*5)
                p5++;
        }
        return result[index-1];
    }
};